package com.tbit.main.service;

import com.tbit.main.h2.pojo.ParkPoint;
import com.tbit.main.pojo.BleBeacon;
import com.tbit.main.pojo.ParkPointBoundCount;

import java.util.List;
import java.util.Map;

/**
 * @author LMY
 * @create 2020-11-16 17:59
 * 道钉
 */
public interface BleBeaconService {

    /**
     * 新增
     *
     * @param bleBeacon
     */
    void insert(BleBeacon bleBeacon);

    /**
     * 查询站点内道钉
     *
     * @param state
     * @param parkPointId
     * @param pageNO
     * @param rowCount
     * @return
     */
    List<BleBeacon> queryPage(Integer state, Integer parkPointId, Integer pageNO, Integer rowCount);

    /**
     * 查询运营区域道钉
     *
     * @param accountId
     * @return
     */
    List<ParkPoint> getBleBeacon(Integer accountId);

    /**
     * 查询分区道钉
     *
     * @param regionId
     * @return
     */
    List<ParkPoint> getBleBeaconRegionId(List<Integer> regionId);

    /**
     * 查询总数
     *
     * @param state
     * @param parkPointId
     * @return
     */
    Integer queryCount(Integer state, Integer parkPointId);

    /**
     * 查询详细
     *
     * @param state
     * @param parkPointId
     * @return
     */
    List<ParkPointBoundCount> getByStateId(Integer state, List<Integer> parkPointId);

    /**
     * 批量插入
     *
     * @param parkPointId
     * @param list
     * @return
     */
    List<String> addBatch(Integer parkPointId, List<String> list, Integer accountId);

    /**
     * 根据道钉id删除
     *
     * @param bleBeaconId
     */
    void delete(Integer bleBeaconId);

    /**
     * 根据道钉id删除
     *
     * @param machineNO
     */
    void delNO(String machineNO);

    /**
     * 更新设备时间
     */
    void updateTime(List<String> machineNO);

    /**
     * 更新
     */
    void update(String machineNO, Integer state, String remark);

    /**
     * 查询站点设别分组
     *
     * @param parkPoints
     * @param time
     * @param state
     * @return
     */
    List<Map<String, Object>> getDevice(List<Integer> parkPoints, Integer time, Integer state);

    /**
     * 根据时间查询
     *
     * @param machineNOs
     * @param time
     * @return
     */
    List<BleBeacon> getByNOTime(List<String> machineNOs, String time);

    /**
     * 批量更改设备状态
     *
     * @param machineNOs
     */
    void updateState(List<String> machineNOs, Integer state);

    /**
     * 根据时间查询
     *
     * @param time
     * @return
     */
    List<BleBeacon> getTime(String time, List<Integer> parkPointId, Integer state, Integer accountId);

    /**
     * 根据时间查询分组
     *
     * @param time
     * @param parkPointIds
     * @return
     */
    List<ParkPointBoundCount> getTimeCount(String time, List<Integer> parkPointIds);

    /**
     * 查询总数
     *
     * @param parkPointIds
     * @return
     */
    List<ParkPointBoundCount> getAllId(List<Integer> parkPointIds);

    /**
     * 根据设备查询
     *
     * @param machineNO
     * @return
     */
    BleBeacon getByMachineNO(String machineNO);
}
